跳到主要内容

Swift 字符与字符串

阐述​

字符(Character)类型对应的是一个 Unicode 的扩展字素群。这个字素群可以包含一个或多个 Unicode 码位。

而字符串(String)类型在内部存储中也是一系列 Unicode 码位的序列,它可以看作是多个 Character 的序列。

子字符串 Substring​

可以用切片(Swift 范围)来获得一个子串,它是一个 Substring 对象。

Unicode 编码的访问​

可以用过 utf8, utf16 以及 unicodeScalars 等属性来访问实际的编码值。

实例​

let eAcute: Character = "\u{E9}"                         // é
let combinedEAcute: Character = "\u{65}\u{301}" // e followed by ́
// eAcute is é, combinedEAcute is é

性质​

  • 字符串的长度(.count)是计算字符串中字符的数量,由于要考虑到不同的字素群,所以这种计数是 O(n) 的
  • 字符串不能直接用整数来索引,而需要用 String.Index 类型。这样类型有几个用法:
    • s.startIndex, s.endIndex 获取起始和终止索引
    • s.index(before: xxx) 或 s.index(after: xxx) 根据前一个索引获取新的索引
    • s.index(s.startIndex, offsetBy: 7) 可以获取在某一位置之后的索引
    • s.indices 方法返回所有的索引
  • 字符串的更改:可以用 insert、remove 等函数,附加一个合适的 at 参数

字符串的比较​

字符串的相等性是用字素群正则等价来判断的;类似的有前缀和后缀的判断。

相关内容​

参考文献​